package  main.java.leetcode.editor.cn;
//2023-07-26 16:17:11
//给定一个整数数组，找出总和最大的连续数列，并返回总和。 
//
// 示例： 
//
// 输入： [-2,1,-3,4,-1,2,1,-5,4]
//输出： 6
//解释： 连续子数组 [4,-1,2,1] 的和最大，为 6。
// 
//
// 进阶： 
//
// 如果你已经实现复杂度为 O(n) 的解法，尝试使用更为精妙的分治法求解。 
// Related Topics 数组 分治 动态规划 👍 137 👎 0

class ContiguousSequenceLcci {
    public static void main(String[] args) {
        //创建该题目的对象方便调用
        Solution solution = new ContiguousSequenceLcci().new Solution();
    }
    //leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public int maxSubArray(int[] nums) {
        if(nums.length == 0){
            return 0;
        }
        int[] dp = new int[nums.length];
        dp[0] = nums[0];
        int res = nums[0];

        for(int i = 1;i<nums.length;i++){
            dp[i] = Math.max(dp[i-1]+nums[i],nums[i]);
            res = res > dp[i] ? res : dp[i];
        }
        return res;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}
